home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
526-550
/
disk_539
/
uedit
/
config!r
< prev
next >
Wrap
Text File
|
1992-05-06
|
8KB
|
278 lines
======= AREXX CMDS ======
Major modifications to this file by Kerry Zimmerman [71470,1340] 4/14/89
o Changed output buffer to 62, input buffer to 61 to avoid conflict with
Eric Kennedy's VI extensions.
o altctl-9 now displays current autotraffic status
o altctl-0 now asks for a command name and a list of macronums.
It adds these to the end of file U:REXXCOMM. This file is a database
of macros understood by the new rexx autotraffic handler.
Edit Rexx output buffer 62
<altCtl-1:
equateLoc(buf62,sPage,sFile)
editBuf(buf62) >
Edit Rexx input buffer 61
<altCtl-2:
equateLoc(buf61,sPage,sFile)
editBuf(buf61) >
Send output buffer 62 to Rexx
<altCtl-3:
equateNum(n98,0) .. 0 flag means send msg, not reply
rexxOut(buf62,all,0,n98,n99) .. 0 ActionResult means default to RXCOMM
runKey(virtual-s) >
Fetch Rexx input into buffer 61
<altCtl-4:
if (rexxIn(buf61,sFile,n97,n98,n99)) {
..if (eqNum(n98,0)) { .. if Msg
equateLoc(buf61,sPage,sFile)
editBuf(buf61)
..}
}
runKey(virtual-r) >
Send hilite region to Rexx.
<altCtl-5:
equateNum(n98,0) .. 0 means msg, not reply
rexxOut(curFile,hilite,0,n98,n99) .. 0 means default to Action = RXCOMM
runKey(virtual-s) >
Fetch Rexx input at cursor
<altCtl-6:
rexxIn(curFile,atCursor,n97,n98,n99)
runKey(virtual-r) >
Send an OK reply to Rexx (NOTE: Amiga-ESC abort sends Failed reply.)
<altCtl-7:
equateNum(n98,1) .. 1 means reply, not msg
rexxOut(" ",all,0,n98,n99) .. 0 is OKAY result
runKey(virtual-s) >
Send an OK reply to Rexx along with text in hilite region
<altCtl-8:
equateNum(n98,1)
rexxOut(curFile,hilite,0,n98,n99) ..text NOT sent, if not RXFB_RESULT msg
runKey(virtual-s) >
Toggle flag to handle Rexx traffic automatically during idle periods.
<altCtl-9:
.. will swap in the rexxKey cmd below
if (getFlag(curFile,userGlobalB)) putMsg("AutoTraffic is OFF")
else putMsg("AutoTraffic is ON")
flipFlag(curFile,userGlobalB) .. toggle flag
swapKey(rexxKey,virtual-t) .. swap in/out the auto-traffic rexxKey cmd
>
Make an x.rexx program with commands to send to Uedit.
<altCtl-0:
freebuf(buf35)
if (!loadfile("REXXCOMM")) loadfile("S:REXXCOMM")
movecursor(curFile,eFile)
putmsg("Enter new command's name")
freebuf(buf50)
inputString(buf50)
insertRgn(curFile,atCursor,buf50,all)
insertRgn(curFile,atCursor," |
",all)
movecursor(curFile,sChar)
movecursor(curFile,sChar)
updateDisplay
while (nothing) {
putMsg("Give desired inputs. Amiga-ESC when done. F2 to save.")
getKeyVal(macroNum,inputChar)
toWord(curFile,macroNum)
insertChar(curFile,"+")
toWord(curFile,inputChar)
insertChar(curFile," ")
updateDisplay
fileSize(curFile,n54) .. force pack, avoid mem-abort
}
>
<virtual-t:
if (rexxIn(buf61,eFile,n97,n98,n99)) { .. if fetched something
..runKey(virtual-r) .. show flags - slower if use this line
if (eqNum(n98,0)) { .. if recvd a Msg, not a Reply
equateNum(n96,0)
push(n99,searchCaps) .. (RS mod)
equateNum(searchCaps,0) .. turn off case sensitivity (RS mod)
runkey(virtual-y)
pop(n99,searchCaps) .. restore orig case sensitivity (RS mod)
freeBuf(buf61)
if(not eqNum(n96,0)) return .. comand already sent a reply
if(eqLoc(curFile,sInvert,eInvert)) goto label(50)
rexxOut(curFile,Invert,0,1,n99) .. search uses this as an example
return
label(50) rexxOut(" ",all,0,1,n99)
}
}
>
handle named macro messages
<virtual-y:
.. if buf35 doesn't contain the named commands yet
.. read it in
moveCursor(buf35,sfile)
freeBuf(buf50)
insertRgn(buf50,atCursor,"REXXCOMM",all)
setSearch(buf50)
if(not search(buf35,sHilite,eHilite,1)) {
freeBuf(buf35)
if(!insertFile(buf35,sfile,"REXXCOMM")
& !insertFile(buf35,sfile,"S:REXXCOMM")) {
putmsg("file REXXCOMM not found")
returnFalse
}
}
.. extract 1st word of buf61 which is the command
moveCursor(buf61,sfile)
equateLoc(buf61,sHilite,atCursor)
moveCursor(buf61,eWord)
equateLoc(buf61,eHilite,atCursor)
freebuf(buf50)
insertRgn(buf50,sFile,buf61,Hilite) ..save command
clearRgn(buf61,Hilite) ..erase command leaving any args
while(is(buf61,whiteSpace))
clearChar(buf61)
setSearch(buf50)
.. search for this command in list of commands in buf35
moveCursor(buf35,sfile)
moveCursor(buf35,eLine) .. start search after 1st line
if(not search(buf35,sHilite,eHilite,1)) {
freeBuf(buf54)
insertRgn(buf54,efile,"REXX command NOT found: ",all)
insertRgn(buf54,efile,buf50,all)
returnFalse
}
.. move to the first macronum
moveCursor(buf35,eHilite)
.. process each macronum+inputchar pair until "|" found
label(10)
while(is(buf35,whitespace))
moveCursor(buf35,echar)
.. return if end of commands
if(is(buf35,"|") | is(buf35,eFile)) returnTrue
.. convert xx+yy to macronum-xx, inputchar-yy
equateNum(macroNum,0)
equateNum(inputChar,0)
if(is(buf35,digit)) {
toNumber(macroNum,buf35)
while(is(buf35,digit))
moveCursor(buf35,echar)
if(is(buf35,"+")){
moveCursor(buf35,echar)
if(is(buf35,digit)){
toNumber(inputChar,buf35)
while(is(buf35,digit))
moveCursor(buf35,echar)
}
}
}
.. run valid macroNum, or type valid inputChar
if(inUse(macroNum)) runKey(macroNum)
else if(gtNum(inputChar,0)) TypeChar(inputChar)
else return
goto label(10) >
Show numbers for a received Arexx msg or reply
<virtual-r:
if (not eqNum(n99,0)) runKey(virtual-m) .. rexxIn() failed
else { .. rexxIn() succeeded
if (eqNum(n98,0)) { .. MSG: show action & modifiers
and(n96,n97,0X0F000000) .. get ACTION code
and(n95,n97,0X000F0000) .. get MODIFIER
if(gtNum(n95,0)) div(n95,n95,0x10000)
freeBuf(buf54)
insertRgn(buf54,atCursor,"Msg fetched: Action = ",all)
toWord(buf54,n96)
insertRgn(buf54,atCursor," Modifier = ",all)
toWord(buf54,n95)
..insertRgn(buf54,atCursor," -- press return",all)
putMsg(buf54)
} else { .. REPLY:
if (eqNum(n97,0)) putMsg("Reply fetched. Result OKAY")
else {
freeBuf(buf54)
insertRgn(buf54,atCursor,
"Reply received: Result = ERROR ",all)
toWord(buf54,n97)
..insertRgn(buf54,atCursor," -- press return",all)
putMsg(buf54)
}
}
}
..getkey(n50)
>
Show numbers for a sent ARexx msg or reply
<virtual-s:
if (not eqNum(n99,0)) runKey(virtual-m) .. rexxOut() failed
else {
if (eqNum(n98,0)) putMsg("Msg sent")
else putMsg("Reply sent")
}
>
Show returncode error msgs
<virtual-m:
switch(n99) {
case(-1) { putMsg("ARexx not up") }
case(-2) { putMsg("No memory or no text") }
case(-3) { putMsg("Msg/reply > 65535 bytes") }
case(-4) { putMsg("Nothing to fetch or reply to") }
case(-5) { putMsg("Fetch reply before sending this msg/reply") }
}
returnFalse .. so virtual-r/-s above will return False
>
====================================================================
Some useful functions for the arexx macros
The 'ask' macro. Usage: ask 'Do you want to continue?'
ask a question and return true or false
<virtual-i:
equateNum(n96,1)
if(askYesNo(buf61))
rexxOut("YES",all,0,1,n99)
else
rexxOut("NO",all,0,1,n99)
>
the 'text' macro. Usage: text 'this will be inserted'
insert text at cursor
<virtual-h: insertRgn(curFile,atCursor,buf61,all)
updatedisplay>
the 'loadfile' macro. Usage: loadfile 'sys:myfile'
edit given file
<virtual-j: loadfile(buf61)>
the 'gotoline' macro Usage: gotoline 100
goto line
<virtual-n: toNumber(n50,buf61)
lineToLoc(curFile,atCursor,n50) >
the 'searchfor' macro Usage: searchfor pattern
search for a given string
<virtual-o: push(buf99,buf61)
pop(buf99,buf49)
setsearch(buf49)
runkey(normal-f9) >
The 'message' macro Usage: message 'my message'
issue a message
<virtual-p: putmsg(buf61) >